// pages/cart/cart.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    totalPrice: 0,
    cartList: [],
    isCheckedAll: false,
    isChecked: false,
    totalPrice: 0,
    isNoResult: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getCartData();
  },

  //更新接口方法
  //获取购物车商品列表
  getCartData: function () {
    let self = this;
    wx.request({
      url: 'https://ys.lumingx.com/api/miniapps/getCardList',
      data: {
        userId: '32977'
      },
      method: 'GET',
      dataType: 'json',
      success: (res) => {
        console.log(res)
        let result = res.data;
        if (result && result.success && result.data.length > 0) {
          self.setData({
            cartList: result.data,
            isNoResult: false,//有数据
          })
        } else {
          self.setData({
            isNoResult: true, //没数据
          })
        }
      },
      fail: (res) => { },
      complete: (res) => { },
    })
  },

  //自定义事件 -- 购物车全选/返选功能
  //1.全选：选中所以商品，计算总价
  //2.取消所有商品，总价为0
  checkAll: function () {
    let self = this;
    //设置互为取反
    let isCheckedAll = !this.data.isCheckedAll
    // console.log(isCheckedAll)
    self.setData({
      // isCheckedAll:isCheckedAll
      isCheckedAll //语法糖
    })

    let list = self.data.cartList;
    let totalAmount = 0;
    list.forEach((item) => {
      if (isCheckedAll) {
        item.isChecked = true;
        //全选时获取计算总价
        totalAmount += item.SaleAmount * item.Quantity

      } else {
        item.isChecked = false;
      }
    })
    //修改选中状态后赋值给变量
    self.setData({
      cartList: list,
      totalPrice: totalAmount,//获得总价后，赋值给变量
    })
  },

  //自定义事件 -- 购物车的单选
  checkboxChange: function (e) {
    // console.log(e)
    // console.log(e.detail.value)
    let self = this;
    let ids = e.detail.value;  //是数组[]

    let list = self.data.cartList;
    let totalPrice = 0;
    list.forEach(item => {     //循环数据源(item)
      item.isChecked = false;  //选中前默认是未选择状态

      ids.forEach(id => {    //循环每个item(id)
        if (item.Id == id) {   //当点击某个商品后
          totalPrice += item.SaleAmount * item.Quantity
          item.isChecked = true
        }
      })
    })

    //声明isAll，并把处理好的list赋值给它
    //list通过every()处理：判断是否全选，全选为true,不全选为false
    let isAll = list.every(item => item.isChecked)
    //console.log(isAll)

    self.setData({ //重新赋值给总价
      totalPrice: totalPrice,
      isCheckedAll: isAll
    })
    // console.log(list)
    // console.log(e.detail.value)
  },

  //自定义事件 -- 删除购物车中的商品
  //步骤：1-判断是否选择了商品，2.如未选，请选，3.弹窗提示，确认删除
  btnDel: function () {
    let self = this;

    //声明被选中商品totalCount，默认为0
    let totalCount = 0;

    //保存選中的商品id(為刪除和清空準備變量)
    let selectedIds = [];

    self.data.cartList.forEach(item => { //循环cartList
      if (item.isChecked) {
        totalCount += item.Quantity

        //在循環內把選中商品追加到GoodsId
        selectedIds.push(item.GoodsId)
      }
    });
    //未选中提示框
    if (totalCount == 0) {
      wx.showToast({
        title: '未选择商品',
        icon: 'error'
      });
      return;
    } else { //否则(选中了商品)
      wx.showModal({
        title: '提示',
        content: '您确定要删除此商品吗？',
        success: (res) => {
          if (res.confirm) {
            console.log('确认')
            //此处完整的delCart()已移到外面，
            //注意：传参
            self.delCart(selectedIds);

          } else if (res.cancel) {
            console.log('取消')
          }
        },
        fail: (res) => { },
        complete: (res) => { },
      })
    }
  },

  //自定义事件 -- 删除购物车网络请求
  delCart: function (selectedIds) {
    //發送請求
    let self = this;
    wx.request({
      url: 'https://ys.lumingx.com/api/miniapps/delCart',
      method: 'POST',
      data: {
        userId: '32977',
        ids: selectedIds,
      },

      //在成功回調中，調用獲取購物車方法，刷新頁面
      success: function (res) {
        self.getCartData()

        //清空數據
        self.setData({
          isCheckedAll: false,
          totalPrice: 0
        })
      }
    })
  },

  //自定义事件 -- 跳转到首页
  goHome: function () {
    wx.switchTab({
      url: '/pages/home/home',
    })
  },

  //自定义事件 -- 增加购物数量
  add: function (e) {
    //console.log(e.currentTarget.dataset.index)
    let self = this;
    let index = e.currentTarget.dataset.index;
    //1.获取商品数量
    let item = self.data.cartList[index]
    // console.log(item)
    //2.+1 并修改数据
    item.Quantity++;
    self.addToCart(item, '增加成功')
    // wx.request({
    //   url: 'https://ys.lumingx.com/api/miniapps/updateCart',
    //   method: 'POST',
    //   data: {
    //     userId: '32977',
    //     quantity: item.Quantity,
    //     goodsId: item.GoodsId,
    //   },
    //   success: (res) => {
    //     // console.log(res)
    //     if (res.data && res.data.success) {
    //       wx.showToast({
    //         title: '增加成功',
    //         icon: 'none'//默认success
    //       })

    //       self.calPrice(); //调用计算总价方法
    //     }
    //   },
    // })
    //3.将新数据渲染页面
  },

  //自定义事件 -- 减少购物数量
  reduce: function (e) {
    //console.log(e.currentTarget.dataset.index)
    let self = this;
    let index = e.currentTarget.dataset.index;
    //1.获取商品数量
    let item = self.data.cartList[index]
    // console.log(item)
    //2.-1 并修改数据
    if (item.Quantity == 1) {
      wx.showToast({
        title: '不能再减了',
      });
      return;
    }
    item.Quantity--;

    //发送请求，修改数据库
    // 调用接口
    self.addToCart(item, '修改成功')
    // wx.request({
    //   url: 'https://ys.lumingx.com/api/miniapps/updateCart',
    //   method: 'POST',
    //   data: {
    //     userId: '32977',
    //     quantity: item.Quantity,
    //     goodsId: item.GoodsId,
    //   },
    //   success: (res) => {
    //     // console.log(res)
    //     if (res.data && res.data.success) {
    //       wx.showToast({
    //         title: '修改成功',
    //         icon: 'none'//默认success
    //       })

    //       self.calPrice();
    //     }
    //   },
    // })
    //3.将新数据渲染页面
  },

  //封装加入购物车的更新接口调用
  addToCart: function (item, title) {
    let self = this;
    wx.request({
      url: 'https://ys.lumingx.com/api/miniapps/updateCart',
      method: 'POST',
      data: {
        userId: '32977',
        quantity: item.Quantity,
        goodsId: item.GoodsId,
      },
      success: (res) => {
        // console.log(res)
        if (res.data && res.data.success) {
          wx.showToast({
            title: title,//接收传过来的变量
            icon: 'none'//默认success
          })

          self.calPrice();//调用计算总价方法
          //获得所需变量
          // let list = self.data.cartList;
          // let totalPrice = 0

          // list.forEach(item => {
          //   if (item.isChecked) {//如果选中就进行价格累加
          //     totalPrice += item.Quantity * item.SaleAmount;
          //   }
          // })
          // //修改数据，渲染页面
          // self.setData({
          //   cartList: self.data.cartList,
          //   totalPrice
          // })
        }
      },
    })
  },

  //计算总价格的公共方法
  calPrice: function () {
    let self = this;
    //获得所需变量
    let list = self.data.cartList;
    let totalPrice = 0

    list.forEach(item => {
      if (item.isChecked) {//如果选中就进行价格累加
        totalPrice += item.Quantity * item.SaleAmount;
      }
    })
    //修改数据，渲染页面
    self.setData({
      cartList: self.data.cartList,
      totalPrice
    })
  },

  //手动修改购物车商品数量
  getInputValue:function(e){
    let self = this;
    let index = e.currentTarget.dataset.index
    let item = self.data.cartList[index]
    
    console.log(e.detail.value)
    self.addToCart(item,'修改成功')
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.getCartData();//切换页面时刷新购物车
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})